#pragma once
#include <semaphore.h>

using namespace std;

class Sem_t
{
public:
    Sem_t(size_t num)
    :_sem(sem_t())
    ,_num(num)
    {
        sem_init(&_sem,0,_num);
    }

    void p()//p操作：等待信号量，并将信号量--
    {
        sem_wait(&_sem);
    }

    void v()//c操作：释放信号量，并将信号量++
    {
        sem_post(&_sem);
    }

    ~Sem_t()
    {
        sem_destroy(&_sem);
    }
private:
    sem_t _sem;
    size_t _num;
};